const express=require('express');
const pool=require('../pool.js');

const router=express.Router();


//1.1用户注册接口（后台无验证码）
router.post('/register',(req,res,next)=>{
  let obj=req.body;
  pool.query('insert into user set ?',[obj],(err,data)=>{
    if(err){next(err);return;}
    if (data.affectedRows) {
      res.send({
        "code":1,
        "msg":"注册成功",
        "data":data
      })
    } else {
      res.send({
        "code":0,
        "msg":"注册失败"        
      })
    }
  });
});


//1.2用户注册接口（含验证码）
router.post('/register_code',(req,res,next)=>{
  // 查看前台传值是否到达  
  let obj=req.body;
  // console.log(obj);
  // 执行sql查询
  // console.log("obj:",obj)
  // console.log("[obj]:",[obj])
  let ucode=obj.code;//用户输入的验证码
  let answer=req.session.answer;//上一次请求的正确的验证码
  // console.log(`ucode:${ucode} answer:${answer}`);
  // let answer = '1234'
  // console.log(`ucode:${ucode} answer:${answer}`);
  if (ucode==answer) {
    console.log('验证码验证成功');
    delete obj.code;
    // console.log(obj)
    pool.query("insert into user set ?",[obj],(err,data)=>{
      // 排错，处理错误
      if(err){
        next(err);
        return;
      }
      // console.log(`注册用户数据`,data)
      // 查看数据库是否返回查询结果为数组
      // console.log(data);
      // 判断是否查询到数据
      if(data.affectedRows){
        res.send({code:1,msg:"注册成功"});
      }else{
        // 没查到数据
        res.send({code:0,msg:"注册失败"});      
      }
    });
     
  } else {
    res.send('验证码验证失败');
  }
});



// //2.1用户登录的接口(userName)
// router.post('/login',(req,res,next)=>{
//   //获取post请求的数据
//   let obj=req.body;
//   pool.query('select * from user where userName=? and upwd=?',[obj.userName,obj.upwd],(err,data)=>{
//     if(err){next(err);return;}
//     //结果是数组，如果是空数组，说明登录失败，否则登录成功
//     if(data.length){
//       res.send({code:1,msg:'登录成功'});     
//     }else{
//       res.send({code:0,msg:'登录失败'});
// 	}
//   });
// });

//2.1综合登录接口（管理员、用户）(userName)
router.post('/login',(req,res,next)=>{
  // 查看前台传值是否到达  
  let obj=req.body;
  // console.log(obj);
  // 执行sql查询
  // let ucode=obj.code;//用户输入的验证码
  // let answer=req.session.answer;//上一次请求的正确的验证码
  // console.log(`ucode:${ucode} answer:${answer}`);
  // if (ucode==answer) {
    // console.log('验证码验证成功');
    pool.query("select * from user where userName=? and upwd=?",[obj.userName,obj.upwd],(err,data)=>{
      // 排错，处理错误
      if(err){
        next(err);
        return;
      }
      //查看数据库是否返回查询结果为数组
      // console.log(data);
      // 判断是否查询到数据
      if(data.length){
        res.send({code:1,msg:"登录成功",data});
      }else{
        // 没查到数据
        res.send({code:0,msg:"登录失败"});      
      }
    });
     
  // } else {
  //   res.send('验证码验证失败');
  // }
});



//2.2用户登录的接口(phone+upwd)
router.post('/login_phone',(req,res,next)=>{
  let obj=req.body;
  pool.query('select * from user where phone=? and upwd=?',[obj.phone,obj.upwd],(err,data)=>{
    if(err){next(err);return;}
    //结果是数组，如果是空数组，说明登录失败，否则登录成功
    if(data.length){
      res.send({code:1,msg:'登录成功'});     
    }else{
      res.send({code:0,msg:'登录失败'});
	}
  });
});


//3.修改用户资料
router.put('/edit',(req,res,next)=>{
  let obj=req.body;
  pool.query('update user set ? where uid=?',[obj,obj.uid],(err,result)=>{
    console.log(result);
    if(err){next(err);return;}
	  //结果是对象，如果对象下的affectedRows值为0说明修改失败，否则修改成功
    if(result.affectedRows===0){
      res.send({code:0,msg:'修改失败'});
    }else{
      res.send({code:1,msg:'修改成功'});
    }
  });
});


// 4.用户列表显示(分页查询)
router.get('/lists',(req,res,next)=>{
  const page_num = parseInt(req.query.page_num) || 1;
  const page_size = parseInt(req.query.page_size) || 10;
  const params = [(page_num-1)*page_size,page_size];
  var sql = "select * from user limit ?,?";

  pool.query(sql,params,(err,data)=>{
    if(err){next(err);return;}
    if (data.length) {
      let sqlTotal = "select count(*) as total from user"   //统计总数据条数命名为total
      pool.query(sqlTotal,(err,among) => {
        if(err){
          console.log(err);
        } else {
          let total = among[0]['total'];
          res.json({
            "code":1,
            "message":"查询成功",
            "data":data,
            "paging":{
              page_num:page_num,
              page_size:page_size,
              total:total
            }
          })
        }
      })
    } else {
      res.json({
        code:0,
        message:'查询失败'
    })
  }
})
})


// //5.查重（用手机号或者登录名查询单个用户）
// router.post('/list',(req,res,next)=>{
//   //2.1获取post请求的数据
//   let obj=req.body;
//   pool.query('select * from user where phone=? or userName=?',[obj.phone,obj.userName],(err,data)=>{
//     if(err){next(err);return;}
//     //结果是数组，如果是空数组，说明登录失败，否则登录成功
//     if(data.length){
//       res.send({code:1,msg:'查询单个成功，手机号或用户名已存在',data});     
//     }else{
//       res.send({code:0,msg:'查询单个失败，手机号或用户名不存在'});
// 	}
//   });
// });

//5.查重（用手机号或者登录名查询单个用户）
router.post('/list',(req,res,next)=>{
  //2.1获取post请求的数据
  let obj=req.body;
  pool.query('select * from user where phone=? or userName=?',[obj.phone,obj.userName],(err,data)=>{
    if(err){next(err);return;}

    if(data.length && obj.phone){
      res.send({code:1,msg:'该手机号已存在'});     
    }else if(data.length==0 && obj.phone){
      res.send({code:2,msg:'该手机号可以使用'});
	  }else if(data.length && obj.userName){
      res.send({code:3,msg:'该用户名已存在'});
    }else{
      res.send({code:4,msg:'该用户名可以使用'});
    }
    
  });
});



// 6.查询用户uid（依据登录名）
router.get('/:userName',(req,res,next)=>{
  let obj = req.params;
  pool.query('select * from user where userName=?',[obj.userName],(err,data)=>{
    if(err){next(err);return;}
    if (data.length) {
      res.send({
        "code":1,
        "msg":"查询成功",
        "data":data
      })
    } else {
      res.send({
        "code":0,
        "msg":"查询失败"        
      })
    }
  })
})


//导出路由器对象
module.exports = router;